﻿using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Net.Mail;

namespace Gestion_Eleve
{
    public class Personnes : IComparer<Personnes>
    {
        #region variables
        public String Nom { get; set; }
        public String Prenom { get; set; }
        public MailAddress Email { get; set; }
        public DateTime Ddn { get; set; }
        public static List<Personnes> listPersonne = new List<Personnes>();
        public FileStream FS = new FileStream();
        #endregion

        #region constructeurs
        public Personnes(String Nom, String Prenom, MailAddress Email, DateTime Ddn)
        {
            this.Nom = Nom;
            this.Prenom = Prenom;
            this.Email = Email;
            this.Ddn = Ddn;
        }
        public Personnes()
        {
            this.Nom = Nom;
            this.Prenom = Prenom;
            this.Email = Email;
            this.Ddn = Ddn;
        }
        #endregion

        #region méthodes publiques
        public void AjouterPersonne()
        {
            string nom;
            string prenom;
            MailAddress email;
            DateTime ddn;
            //nom
            Console.WriteLine("Veuillez rentrez le nom de la Personne");
            nom = Convert.ToString(Console.ReadLine());
            //prenom
            Console.WriteLine("Veuillez rentrez le prénom de la personne");
            prenom = Convert.ToString(Console.ReadLine());
            //email
            Console.WriteLine("Veuillez rentrer l'adresse email");
            try
            {
                MailAddress mail = new MailAddress(Console.ReadLine());
                email = mail;
            }
            catch (Exception ex)
            {
                Console.WriteLine("Format de mail invalide");
                email = null;
            }
            //date de naissance
            Console.WriteLine("Veuillez rentrer la date de naissance au format Date (dd/mm/yyyy)");
            ddn = Convert.ToDateTime(Console.ReadLine());
            Personnes pers = new Personnes(nom, prenom, email, ddn);
            FS.EcrireFichier(Program.pathFileString, pers);
        }
        public void ListerPersonne()
        {
            Console.WriteLine("Nom|Prénom|Email|Date de naissance");
            FS.LireFichier(Program.pathFileString, true);
        }
        public void TrierPersonne()
        {
            Personnes comp = new Personnes();
            foreach (string line in File.ReadLines(Program.pathFileString))
            {
                string[] parts = line.Split(';');
                var cust = new Personnes();
                cust.Nom = (String)parts[0];
                cust.Prenom = (String)parts[1];
                cust.Email = new MailAddress(parts[2]);
                cust.Ddn = (Convert.ToDateTime(parts[3]));
                listPersonne.Add(cust);
            }
            listPersonne.Sort(comp);
            foreach (Personnes item in listPersonne)
            {
                Console.WriteLine(item.Nom + "|" + item.Prenom + "|" + item.Email + "|" + item.Ddn + "|");
            }
        }
        public void RechercherDdn()
        {
            Console.WriteLine("Veuillez rentrer une date au format : (dd/mm/yyyy)");
            DateTime dateCherche = Convert.ToDateTime(Console.ReadLine());
            var cust = new Personnes();
            Personnes comp = new Personnes();
            foreach (string line in File.ReadLines(Program.pathFileString))
            {
                string[] parts = line.Split(';');
                cust.Nom = (String)parts[0];
                cust.Prenom = (String)parts[1];
                cust.Email = new MailAddress(parts[2]);
                cust.Ddn = (Convert.ToDateTime(parts[3]));
                listPersonne.Add(cust);
            }
            foreach (Personnes item in listPersonne)
            {
                if (item.Ddn == dateCherche)
                {
                    Console.WriteLine("La personne qui correspond à la date : " + cust.Ddn + " est " + cust.Nom + "," + cust.Prenom);
                }
                else
                {
                    Console.WriteLine("La date : " + cust.Ddn + " ne correspond à aucun enregistrement dans le fichier.");
                }
            }
        }
        public int Compare(Personnes x, Personnes y)
        {
            return x.Nom.CompareTo(y.Nom);
        }
        #endregion
    }
}
